package com.fy.util;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

public class McroUtils {

    public static void main(String[] args) {
        testCreateCode();
    }

    public static  void testCreateCode(){
        //1.数据库名***
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/month2?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=Asia/Shanghai",
                        "root",
                        "root")
                .globalConfig(builder -> {
                    builder.author("晓岩") // 2、设置作者***
                            //    .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .commentDate("yyyy-MM-dd")
                            .outputDir("F:/zhuangao2copy"); // 3、指定输出目录***
                })
                .packageConfig(builder -> {
                    builder.parent("com.fy") // 4、设置父包名 》 启动类包名***
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "F:/zhuangao2copy/xml")); // 5、设置mapperXml生成路径***
                }).strategyConfig(builder -> {
                    builder.controllerBuilder().enableRestStyle();// 设置成restful风格 controller 上是否添加REestController
                })
                .strategyConfig(builder -> {
                    builder.addInclude("t_log") // 6、设置需要生成的表名【有多少设置多少】***
                            .addTablePrefix("t_"); // 7、设置过滤表前缀***
                }).strategyConfig(builder -> {
                    builder.entityBuilder()
                            .enableLombok()
                            .columnNaming(NamingStrategy.underline_to_camel)//驼峰命名属性
                            .logicDeleteColumnName("del_flag")  // 逻辑删除
                            .idType(IdType.AUTO). // 是否需要自增主键
                            build();
                    ;
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();

    }

}
